home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Tools / Languages / MacHaskell 2.2 / progs / prelude / PreludeDynamicPrims.hi < prev    next >
Encoding:
Text File  |  1994-09-27  |  1.7 KB  |  64 lines  |  [TEXT/YHS2]

  1. interface DynamicPrims where
  2.  
  3. {-# Prelude #-}
  4.  
  5. import DynamicInternal(Instance)
  6. import DynamicInternal(Magic)
  7.  
  8. getAllInstances :: () -> [Instance]
  9.  
  10. primApply :: Magic -> Magic -> Magic
  11. primApplyList :: Magic -> [Magic] -> Magic
  12.  
  13. {-# getAllInstances :: LispName("prim-all-instances")
  14.     primApply :: LispName("prim-apply")
  15.     primApplyList :: LispName("prim-apply-list") #-}
  16.  
  17. toMagic :: a -> Magic
  18. fromMagic :: Magic -> a
  19.  
  20. {-# fromMagic :: LispName("prim-from-magic") 
  21.     toMagic :: LispName("prim-to-magic") #-}
  22.  
  23. -- Support for tuple prims.
  24.  
  25. makeTupleCon :: Int -> Magic
  26. makeTupleSel :: Int -> Int -> Magic
  27.  
  28. {-# makeTupleCon :: LispName("prim-get-tuple-constructor")
  29.     makeTupleSel :: LispName("prim-get-tuple-selector") #-}
  30.  
  31. -- For the non-strict printer:
  32.  
  33. tupleFlags :: Magic -> [Bool] -> [Bool]
  34.  
  35. structFlags :: Magic -> [Bool] -> [Bool]
  36.  
  37. {-#  tupleFlags :: LispName("get-tuple-flags")
  38.      structFlags :: LispName("get-struct-flags") #-}
  39.  
  40. primForced :: Magic -> Bool  -- Determines if a value has been forced or not.
  41. {-# primForced :: LispName("car"),Strictness("N") #-}
  42.  
  43. -- This supports general structure manipulation
  44.  
  45. makeGTupleConstr :: Int -> [Bool] -> Magic
  46. makeConstr :: Int -> Int -> [Bool] -> Magic
  47. makeGTupleSel :: Int -> Int -> Bool -> Magic
  48. makeSel :: Int -> Int -> Bool -> Magic
  49. makeEnumConstr :: Int -> Magic
  50. enumTypeToInt :: Magic -> Int
  51. tupleTypeToInt :: Magic -> Int
  52. typeToInt :: Magic -> Int
  53.  
  54. {-#
  55. makeGTupleConstr :: LispName("d-make-tuple-constr")
  56. makeConstr :: LispName("d-make-constr")
  57. makeGTupleSel :: LispName("d-make-tuple-sel")
  58. makeSel :: LispName("d-make-sel")
  59. makeEnumConstr :: LispName("d-make-enum-constr")
  60. enumTypeToInt :: LispName("d-enum-type-to-int")
  61. tupleTypeToInt :: LispName("d-tuple-type-to-int")
  62. typeToInt :: LispName("d-type-to-int")
  63. #-}
  64.